00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #define USING_DESTINY3D
00029 #define DESTINY3D_STATIC_LINK
00030 #define DEAPI_VERSION 50
00031
00032 #include "deGlobalTypes.hpp"
00033 #include "deFileSystem.hpp"
00034 #include "deArray.hpp"
00035 #include "deString.hpp"
00036 #include "deList.hpp"
00037 #include "deRender.hpp"
00038 #include "deCamera.hpp"
00039 #include "deScene.hpp"
00040 #include "deDriver.hpp"
00041 #include "de2D.hpp"
00042 #include "deBitmap.hpp"
00043 #include "deBrush.hpp"
00044
00045
00046 #ifdef DEAPI_EXPORT
00047 #define DEAPI DEDLL_EXPORT
00048 #else
00049 #define DEAPI DEDLL_IMPORT
00050 #pragma comment(lib,"deApi")
00051 #endif
00052
00053 #ifdef WIN32
00054 #include "windows.h"
00055 #endif
00056
00057
00058
00059
00060 class deApi;
00061
00062
00063 class deApiTypes;
00064
00065
00066 class deApiHandle;
00067
00068
00069 class deApiObject;
00070 class deApiNode;
00071 class deApiNodeTree;
00072 class deApiAttribute;
00073 class deApiAttribute_Float;
00074 class deApiAttributeCollection;
00075 class deApiStaticBrush;
00076 class deApiOutputWindow;
00077 class deApiRender;
00078 class deApiCamera;
00079 class deApiViewport;
00080 class deApiViewportLayout;
00081
00082
00083 class deApiFn_Attribute;
00084 class deApiFn_OutputWindow;
00085 class deApiFn_NodeTree;
00086 class deApiFn_Render;
00087 class deApiFn_Camera;
00088 class deApiFn_Viewport;
00089 class deApiFn_ViewportLayout;
00090
00091
00092
00093
00094
00095 #define DECLARE_RTI \
00096 public:\
00097 static deApiType Type;
00098
00099 #define DEFINE_RTI(name,parent)\
00100 deApiType name::Type(#name, &parent::Type);
00101 #define DECLARE_RTI_BASE(name)\
00102 deApiType name::Type(#name, NULL);
00103
00104 class DEAPI deApiType
00105 {
00106 public:
00107 deApiType();
00108 deApiType(const deString& sName, deApiType* pParent);
00109 virtual ~deApiType();
00110 deString& GetName();
00111 deString& GetParentName();
00112 deString& GetBaseName();
00113 deApiType* GetParent();
00114 deApiType* GetBase();
00115 bool IsA(const deApiType* pType);
00116 bool IsA(const deString& sType);
00117
00118
00119 void* SafeCast(const deApiType* pCastTo);
00120 void* SafeCast(const deString& sType);
00121 private:
00122 deString m_sName;
00123 deApiType* m_pParent;
00124 };
00125
00126
00127
00128
00129
00130 class DEAPI deApiTypes
00131 {
00132 public:
00133 enum StatusCode
00134 {
00135 sError = -1000,
00136 sInvalidFunctionSet,
00137 sInvalidObjectType,
00138 sNullObject,
00139 sInvalidAttributeType,
00140 sOk = 0,
00141 sOutOfRange = 65535
00142 };
00143 };
00144
00145
00146
00147
00148
00149
00150
00151
00152 class DEAPI deApiHandle
00153 {
00154 friend class deApiNodeTree;
00155
00156 public:
00157
00158
00159
00160 bool IsA(const deApiType* pType);
00161 bool IsA(const deString& sType);
00162
00163
00164 bool IsNull();
00165
00166
00167 unsigned long GetRuntimeID();
00168
00169
00170
00171
00172
00173 bool Destroy();
00174
00175
00176 deApiHandle& operator=(deApiHandle& rhs);
00177
00178
00179 deApiHandle(const deApiHandle& rhs);
00180
00181
00182 deApiHandle();
00183
00184
00185 ~deApiHandle();
00186 private:
00187
00188
00189 void SetRuntimeID(unsigned long runtimeID);
00190
00191
00192 deApiObject* Dereference();
00193 private:
00194
00195
00196 unsigned long runtimeID;
00197
00198
00199 bool bNull;
00200 };
00201
00202
00203 #ifdef DEAPI_PRIVATE
00204 #include "../../deApi/deApi_Private.hpp"
00205 #endif
00206
00207
00208
00209
00210
00211
00212
00213
00214 class DEAPI deApiFn_Attribute
00215 {
00216 public:
00217 enum DataType
00218 {
00219 Invalid = 0,
00220 Float,
00221 Int,
00222 Vector,
00223 Bool,
00224 Color_RGB,
00225 Color_Alpha,
00226 Color_ARGB,
00227 UV,
00228 UVW,
00229 Transform,
00230 OutOfRange = 65535
00231 };
00232
00233 deApiFn_Attribute();
00234 ~deApiFn_Attribute();
00235
00236
00237
00238 deApiHandle Create(DataType AttributeType, const deString& sName, const deString& sDescription);
00239
00240
00241 bool AddToCollection(deApiObject* pCollection);
00242
00243
00244
00245
00246
00247 private:
00248 deApiAttribute* m_pAttribute;
00249 deApiAttributeCollection* m_pAttributeCollection;
00250 DataType m_type;
00251 };
00252
00253
00254
00255
00256 class DEAPI deApiFn_OutputWindow
00257 {
00258 public:
00259
00260
00261 deApiFn_OutputWindow();
00262
00263
00264 ~deApiFn_OutputWindow();
00265
00266
00267 deApiHandle Create(int x, int y, int width, int height, const deString& title, bool bSizeable=true, bool bCaption=true);
00268
00269
00270 deApiTypes::StatusCode BindHandle(deApiHandle handle);
00271
00272
00273
00274
00275 void AddLogText(const deString& sText);
00276
00277
00278 void Hide(bool bHide);
00279
00280
00281 void WriteToFile(const deString& sFileName);
00282 private:
00283 deApiOutputWindow* pOutputWindow;
00284 };
00285
00286
00287
00288
00289
00290
00291
00292 class DEAPI deApiFn_NodeTree
00293 {
00294 public:
00295 deApiHandle GetNode(unsigned long iRuntimeID);
00296 void GetNodes(deTArray<unsigned long>& aReturn, deString& TypeFilter = deString(""), int iMaxCount = -1);
00297 };
00298
00299
00300
00301
00302
00303
00304 class DEAPI deApiFn_Render
00305 {
00306 public:
00307 void Init(deString& sDriverName);
00308 void Update(float fTime);
00309 };
00310
00311
00312
00313
00314 class DEAPI deApiFn_Camera
00315 {
00316 public:
00317 deApiHandle Create();
00318 void SetFOV(deDouble dDegrees);
00319 void SetOrthoWidth(deDouble dWidth);
00320 void EnableOrtho(bool bEnable);
00321 deTransform GetTransform();
00322 void SetTransform(deTransform transform);
00323 void SetName(const deString sName);
00324 deString GetName();
00325 deDouble GetFOV();
00326 deDouble GetOrthoWidth();
00327 bool IsOrtho();
00328 deDouble GetNearClip();
00329 deDouble GetFarClip();
00330 void SetClip(deDouble dNear, deDouble dFar);
00331 private:
00332 deApiCamera *m_pCamera;
00333 };
00334
00335
00336
00337
00338 class DEAPI deApiFn_Viewport
00339 {
00340 public:
00341 void Hide(bool bHide);
00342 void Freeze(bool bFreeze);
00343 deApiTypes::StatusCode SetCamera(deApiHandle hCamera);
00344 void SetBGColor(deARGB color);
00345 void Maximize(bool bMaximized);
00346 void SetName(const deString& sName);
00347 deString& GetName();
00348 };
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359
00360
00361
00362 class DEAPI deApiFn_ViewportLayout
00363 {
00364 public:
00365 deApiHandle Create();
00366 void SetName(const deString& sName);
00367 deString& GetName();
00368 void WriteToFile(const deString& sFileName);
00369 void LoadFromFile(const deString& sFileName);
00370 void SetViewportCount(int iViewports);
00371 int GetViewportCount();
00372 void SetViewportRect(int iViewport, deFloatRect fRect);
00373 deFloatRect GetViewportRect(int iViewport);
00374 void SetViewportName(const deString& sName);
00375 deString& GetViewportName();
00376 void SetViewportCamera(int iViewport, deApiHandle hCamera);
00377 deApiHandle GetViewportCamera(int iViewport);
00378 private:
00379 deTArray<deFloatRect> m_arrayViewportRects;
00380 deTArray<deString> m_sViewportNames;
00381 };
00382
00383
00384
00385
00386 #define DEAPI_FAILED(status)(status < 0)
00387 #define DEAPI_SUCCEEDED(status)(status >= 0)
00388 #define DEAPI_PASSED(status)(status >= 0)
00389
00390
00391
00392
00393
00394
00395 extern "C" DEAPI bool deApi_InitStandAlone(HWND hParentWindow);